home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Delphi Anthology
/
aDELPHI.iso
/
Runimage
/
Delphi50
/
Source
/
Property Editors
/
adoconed.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1999-08-11
|
4KB
|
147 lines
{*******************************************************}
{ }
{ Borland Delphi Visual Component Library }
{ }
{ Copyright (c) 1999 Inprise Corporation }
{ }
{*******************************************************}
unit AdoConEd;
{$R-}
interface
uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Buttons, StdCtrls, Db, ADODB;
type
TConnEditForm = class(TForm)
OkButton: TButton;
CancelButton: TButton;
HelpButton: TButton;
SourceofConnection: TGroupBox;
UseDataLinkFile: TRadioButton;
UseConnectionString: TRadioButton;
DataLinkFile: TComboBox;
Browse: TButton;
ConnectionString: TEdit;
Build: TButton;
procedure FormCreate(Sender: TObject);
procedure HelpButtonClick(Sender: TObject);
procedure BuildClick(Sender: TObject);
procedure BrowseClick(Sender: TObject);
procedure SourceButtonClick(Sender: TObject);
public
function Edit(ConnStr: WideString): WideString;
end;
function EditConnectionString(Component: TComponent): Boolean;
implementation
{$R *.DFM}
uses TypInfo, LibHelp, OLEDB, ADOInt, ActiveX, ComObj;
const
SConnectionString = 'ConnectionString'; { Do not localize }
function EditConnectionString(Component: TComponent): Boolean;
var
PropInfo: PPropInfo;
NewConnStr,
InitialConnStr: WideString;
begin
Result := False;
with TConnEditForm.Create(Application) do
try
Caption := Format('%s%s%s %s', [Component.Owner.Name, DotSep,
Component.Name, SConnectionString]);
PropInfo := GetPropInfo(Component.ClassInfo, SConnectionString);
InitialConnStr := GetStrProp(Component, PropInfo);
NewConnStr := Edit(InitialConnStr);
if NewConnStr <> InitialConnStr then
begin
SetStrProp(Component, PropInfo, NewConnStr);
Result := True;
end;
finally
Free;
end;
end;
{ TConnEditForm }
function TConnEditForm.Edit(ConnStr: WideString): WideString;
var
FileName: string;
begin
Result := ConnStr;
UseDataLinkFile.Checked := True;
if Pos(CT_FILENAME, ConnStr) = 1 then
begin
FileName := Copy(ConnStr, Length(CT_FILENAME)+1, MAX_PATH);
if ExtractFilePath(FileName) = (DataLinkDir + '\') then
DataLinkFile.Text := ExtractFileName(FileName) else
DataLinkFile.Text := FileName;
end else
begin
ConnectionString.Text := ConnStr;
UseConnectionString.Checked := True;
end;
SourceButtonClick(nil);
if ShowModal = mrOk then
if UseConnectionString.Checked then
Result := ConnectionString.Text
else if DataLinkFile.Text <> '' then
begin
if ExtractFilePath(DataLinkFile.Text) = '' then
Result := CT_FILENAME + DataLinkDir + '\' +DataLinkFile.Text else
Result := CT_FILENAME + DataLinkFile.Text
end
else
Result := '';
end;
{ Event Handlers }
procedure TConnEditForm.FormCreate(Sender: TObject);
begin
HelpContext := hcDADOConnEdit;
GetDataLinkFiles(DataLinkFile.Items);
end;
procedure TConnEditForm.HelpButtonClick(Sender: TObject);
begin
Application.HelpContext(HelpContext);
end;
procedure TConnEditForm.BrowseClick(Sender: TObject);
begin
DataLinkFile.Text := PromptDataLinkFile(Handle, DataLinkFile.Text);
end;
procedure TConnEditForm.BuildClick(Sender: TObject);
begin
ConnectionString.Text := PromptDataSource(Handle, ConnectionString.Text);
end;
procedure TConnEditForm.SourceButtonClick(Sender: TObject);
const
EnabledColor: array[Boolean] of TColor = (clBtnFace, clWindow);
begin
DataLinkFile.Enabled := UseDataLinkFile.Checked;
DataLinkFile.Color := EnabledColor[DataLinkFile.Enabled];
Browse.Enabled := DataLinkFile.Enabled;
ConnectionString.Enabled := UseConnectionString.Checked;
ConnectionString.Color := EnabledColor[ConnectionString.Enabled];
Build.Enabled := ConnectionString.Enabled;
if DataLinkFile.Enabled then
ActiveControl := DataLinkFile else
ActiveControl := ConnectionString;
end;
end.